const {
	verifyToken
} = require('../validations/jwt.js')

const jwt = require('jsonwebtoken');
exports.afterHandle = function(error, result) {
	if (error) {
		console.log(error);
		// 这里返回的是校验错误
		if (error.name === 'ValidationError') {
			const errorMessage = error.details.map((details) => details.message).join(', ')
			return {
				code: 400,
				data: null,
				errMsg: errorMessage
			}
		}
		if (error instanceof jwt.JsonWebTokenError) {
			return {
				code: 401,
				data: null,
				message: '登录无效，请重新登录。'
			};
		}
		if (error instanceof jwt.TokenExpiredError) {
			return {
				code: 401,
				data: null,
				message: '登录已过期，请重新获取。'
			};
		}
		if (error instanceof jwt.NotBeforeError) {
			return {
				code: 401,
				data: null,
				message: '登录尚未生效，请稍后再试。'
			};
		}

		// 无法被捕捉的错误
		return {
			// 根据自己new Errow  去自定义处理
			code: 400,
			data: null,
			message: `未知错误: ${error.message}`
		}
	}

	return {
		code: 200,
		message: 'success',
		data: result || {}
	}
}


exports.beforeHandle = function() {
	// 挂在jwt解析的参数
	const params = this.getParams()
	this.$user = verifyToken(params[0])
}